<template>
  <div>
    <UpdateExcel :before-upload="beforeUpload" :on-success="onSuccess" />
  </div>
</template>

<script>
import UpdateExcel from '@/components/UpdateExcel'
import { sysSserBatch } from '@/api/employees'
export default {
  components: {
    UpdateExcel
  },
  methods: {
    // 控制excel文件大小的
    beforeUpload(file) {
      const result = file.size / 1024 < 1000
      if (!result) {
        this.$message.error('上传文件过大')
      }
      return result
    },
    // excel成功时 文件内容
    async onSuccess(obj) {
      // 1.header对应列表内的头部数据
      // 2.results：列表数据
      // 1.列出转换规则
      const rules = {
        入职日期: 'timeOfEntry',
        姓名: 'username',
        工号: 'workNumber',
        手机号: 'mobile',
        转正日期: 'correctionTime'
      }
      // 第二部循环遍历生成一个新的数组
      const newArr = obj.results.map((item) => {
        // 数组循环 拿到每一项对象
        const obj = {}
        // 每一项对象循环赋值
        Object.keys(item).forEach((key) => {
          // 对象变成数组遍历 获取对象的key 在遍历
          obj[rules[key]] = item[key] // 把对象中的中文转化为英文
        })
        // console.log(obj)
        return obj
      })
      newArr.map((item) => {
        // 拿到数组中的每一项对象
        Object.keys(item).forEach((key) => {
          // 对象换数组循环遍历
          if (key === 'timeOfEntry' || key === 'correctionTime') {
            item[key] = this.execlTomeTOjs(item[key])
          }
        })
      })
      await sysSserBatch(newArr)
      this.$message.success('导入员工成功')
      this.$router.push('/employees')
    },
    // execl表格时间转换
    execlTomeTOjs(num) {
      const t = new Date(
        (num - 1) * 24 * 60 * 60 * 1000 - 8 * 24 * 60 * 60 * 1000
      )
      t.setYear(t.getFullYear() - 70)
      return t
    }
  }
}
</script>

<style></style>
